using System;
using System.Collections.Generic;
using VSLangProj80;
using Interop = Microsoft.VisualStudio.Shell.Interop;

namespace VSSDKAssist.Enums
{
	/// <summary>
	/// Visual Studio context guids enum
	/// </summary>	
	public static class UIContextGuid
	{
		[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")]
		static UIContextGuid()
		{
			values = new SortedDictionary<string, Guid>();
			values.Add("Code window", new Guid(Interop.UIContextGuids.CodeWindow));
			values.Add("Debugging", new Guid(Interop.UIContextGuids.Debugging));
			values.Add("Design mode", new Guid(Interop.UIContextGuids.DesignMode));
			values.Add("Dragging", new Guid(Interop.UIContextGuids.Dragging));
			values.Add("Empty solution", new Guid(Interop.UIContextGuids.EmptySolution));
			values.Add("Full screen mode", new Guid(Interop.UIContextGuids.FullScreenMode));
			values.Add("No solution", new Guid(Interop.UIContextGuids.NoSolution));
			values.Add("Solution building", new Guid(Interop.UIContextGuids.SolutionBuilding));
			values.Add("Solution exists", new Guid(Interop.UIContextGuids.SolutionExists));
			values.Add("Solution has multiple projects", new Guid(Interop.UIContextGuids.SolutionHasMultipleProjects));
			values.Add("Solution has single project", new Guid(Interop.UIContextGuids.SolutionHasSingleProject));

			values.Add("Not building and not debugging", new Guid(Interop.UIContextGuids80.NotBuildingAndNotDebugging));
			values.Add("Solution exists and not building and not debugging", new Guid(Interop.UIContextGuids80.SolutionExistsAndNotBuildingAndNotDebugging));
			values.Add("Solution or project upgrading", new Guid(Interop.UIContextGuids80.SolutionOrProjectUpgrading));
			values.Add("Toolbox initialized", new Guid(Interop.UIContextGuids80.ToolboxInitialized));
			values.Add("Windows forms designer", new Guid(Interop.UIContextGuids80.WindowsFormsDesigner));

			values.Add("VB editor", new Guid(vsContextGuids.vsContextGuidVBEditor));
			values.Add("VB project", new Guid(vsContextGuids.vsContextGuidVBProject));
			values.Add("VCS editor", new Guid(vsContextGuids.vsContextGuidVCSEditor));
			values.Add("VCS project", new Guid(vsContextGuids.vsContextGuidVCSProject));
			values.Add("VJS editor", new Guid(vsContextGuids.vsContextGuidVJSEditor));
			values.Add("VJS project", new Guid(vsContextGuids.vsContextGuidVJSProject));
		}

		#region Properties
		private static SortedDictionary<string, Guid> values;

		/// <summary>
		/// Gets the values.
		/// </summary>
		/// <value>The values.</value>
		public static SortedDictionary<string, Guid> Values
		{
			get { return values; }
		}
		#endregion
	}
}